package br.com.rglariguet.pioneer.modelos;

import java.util.Calendar;

import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.Valid;

import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.format.annotation.DateTimeFormat;

import br.com.rglariguet.pioneer.enums.StatusReparoUsuarioEnum;

@Entity
public class Reparo {
	
	@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
	private long id;
	private String nomeCriadorReparo;
	
	private String numeroInternoDoReparo;
	private String numeroPioneerDoReparo;
	@DateTimeFormat(pattern="dd/MM/yyyy") @Temporal(TemporalType.DATE)
	private Calendar dataDeCriacao = Calendar.getInstance();
	@Temporal(TemporalType.DATE) @DateTimeFormat(pattern="dd/MM/yyyy")
	private Calendar dataDeModificacao;
	@DateTimeFormat(pattern="dd/MM/yyyy") @Temporal(TemporalType.DATE)
	private Calendar dataDeEntrada = Calendar.getInstance();
	@OneToOne @Valid
	private Produto produto = new Produto();
	private String descricaoDoDefeito;
	@NotEmpty(message="{os.obrigatorio}")
	private String numeroDaOrdemDeServico;
	private String acessoriosAcompanhados;
	
	private String motivoReprovacao;
	
	@OneToOne
	private Cliente cliente = new Cliente();
	@Enumerated(EnumType.STRING)
	private StatusReparoUsuarioEnum status = StatusReparoUsuarioEnum.ABERTO;

	@Embedded
	private PedidoDoReparo pedidoDoReparo = new PedidoDoReparo();

	@Embedded
	private DefeitoDoReparo defeitoDoReparo = new DefeitoDoReparo();
	
	@Embedded
	private DadosFechamentoReparo dadosFechamento;

	
	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}
	
	
	
	public String getMotivoReprovacao() {
		return motivoReprovacao;
	}

	public void setMotivoReprovacao(String motivoReprovacao) {
		this.motivoReprovacao = motivoReprovacao;
	}

	public String getNomeCriadorReparo() {
		return nomeCriadorReparo;
	}

	public void setNomeCriadorReparo(String nomeCriadorReparo) {
		this.nomeCriadorReparo = nomeCriadorReparo;
	}

	public String getNumeroInternoDoReparo() {
		return numeroInternoDoReparo;
	}

	public void setNumeroInternoDoReparo(String numeroInternoDoReparo) {
		this.numeroInternoDoReparo = numeroInternoDoReparo;
	}

	public String getNumeroPioneerDoReparo() {
		return numeroPioneerDoReparo;
	}

	public void setNumeroPioneerDoReparo(String numeroPioneerDoReparo) {
		this.numeroPioneerDoReparo = numeroPioneerDoReparo;
	}

	public Calendar getDataDeEntrada() {
		return dataDeEntrada;
	}

	public void setDataDeEntrada(Calendar dataDeEntrada) {
		this.dataDeEntrada = dataDeEntrada;
	}

	public Produto getProduto() {
		return produto;
	}

	public void setProduto(Produto produto) {
		this.produto = produto;
	}

	public String getDescricaoDoDefeito() {
		return descricaoDoDefeito;
	}

	public void setDescricaoDoDefeito(String descricaoDoDefeito) {
		this.descricaoDoDefeito = descricaoDoDefeito;
	}

	public String getNumeroDaOrdemDeServico() {
		return numeroDaOrdemDeServico;
	}

	public void setNumeroDaOrdemDeServico(String numeroDaOrdemDeServico) {
		this.numeroDaOrdemDeServico = numeroDaOrdemDeServico;
	}

	public String getAcessoriosAcompanhados() {
		return acessoriosAcompanhados;
	}

	public void setAcessoriosAcompanhados(String acessoriosAcompanhados) {
		this.acessoriosAcompanhados = acessoriosAcompanhados;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}


	public DefeitoDoReparo getDefeitoDoReparo() {
		return defeitoDoReparo;
	}

	public void setDefeitoDoReparo(DefeitoDoReparo defeitoDoReparo) {
		this.defeitoDoReparo = defeitoDoReparo;
	}

	public StatusReparoUsuarioEnum getStatus() {
		return status;
	}

	public void setStatus(StatusReparoUsuarioEnum status) {
		this.status = status;
	}

	public Calendar getDataDeCriacao() {
		return dataDeCriacao;
	}

	public void setDataDeCriacao(Calendar dataDeCriacao) {
		this.dataDeCriacao = dataDeCriacao;
	}

	public Calendar getDataDeModificacao() {
		return dataDeModificacao;
	}

	public void setDataDeModificacao(Calendar dataDeModificacao) {
		this.dataDeModificacao = dataDeModificacao;
	}

	public DadosFechamentoReparo getDadosFechamento() {
		return dadosFechamento;
	}

	public void setDadosFechamento(DadosFechamentoReparo dadosFechamento) {
		this.dadosFechamento = dadosFechamento;
	}

	public PedidoDoReparo getPedidoDoReparo() {
		return pedidoDoReparo;
	}

	public void setPedidoDoReparo(PedidoDoReparo pedidoDoReparo) {
		this.pedidoDoReparo = pedidoDoReparo;
	}
	
	

}
